package com.zmn.oms.dubbo.dto.zmn.order.shop;

import com.zmn.oms.dubbo.dto.zmn.order.OrderDiscountDIO;
import com.zmn.oms.dubbo.dto.zmn.serviceitem.OrderServiceItemDIO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * 类描述：计算订单金额
 *
 * @author heciqi
 * @date 2020/6/5 11:59
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CalcOrderAmountDRO implements Serializable {

	/**
	 * 1 无金额，2 有金额
	 * @see  com.zmn.common.constant.GlobalConsts#YES 有金额
	 * @see  com.zmn.common.constant.GlobalConsts#NO 无金额
	 *
	 */
	private Integer haveAmount;

	/**
	 * 原价（可空）
	 */
	private Integer originalAmount;

	/**
	 * 待支付金额（可空）
	 */
	private Integer payAmount;

	/**
	 * 优惠金额（可空）
	 */
	private Integer discountAmount;

	/**
	 * 预付方式（可空）1.下单时支付 2 下单后支付 3，两者都支持
	 */
	private Integer prepayType;

	/**
	 * 一口价 1 否 2 是
	 */
	private Integer finalPrice;

	/**
	 * 仅用于前端使用，做交互处理
	 */
	private Integer afterPromotionAmount;

	/**
	 * 服务项列表
	 */
	private List<OrderServiceItemDIO> orderServiceItemList;

	/**
	 * 优惠列表
	 */
	private List<OrderDiscountDIO> orderDiscountList;

	/**
	 * 规则链组合：所有有效链组
	 * 仅给saas端使用
	 */
	private List<Set<CalcOrderAmountPromBaseRuleDRO>> linkOfValidAll;
}
